# 两种排序方法，分别是按标签排序和按数值排序sort_index sort_values
import pandas as pd
import numpy as np

# 行标签乱序排列，列标签乱序排列
unsorted_df = pd.DataFrame(np.random.randn(10, 2), index=[1, 6, 4, 2, 3, 5, 9, 8, 0, 7], columns=['col2', 'col1'])
print(unsorted_df)

# 按标签排序
# 使用 sort_index() 方法对行标签排序，指定轴参数（axis）或者排序顺序。
# 或者可以对 DataFrame 进行排序。默认情况下，按照行标签序排序。
sorted_df = unsorted_df.sort_index()
print(sorted_df)
# 通过将布尔值传递给ascending参数，可以控制排序的顺序（行号顺序）
# sorted_df = unsorted_df.sort_index(ascending=False)

# 按列标签排序
sorted_df = unsorted_df.sort_index(axis=1)
print(sorted_df)

# 按值排序
sorted_df = unsorted_df.sort_values(by='col1')
print(sorted_df)
# sorted_df = unsorted_df.sort_values(by=['col1', 'col2'])

# 排序算法
# mergesort
# heapsort
# quicksort
# 默认为 quicksort(快速排序) ，其中 Mergesort 归并排序是最稳定的算法。
sorted_df4 = unsorted_df.sort_values(by='col1', kind='mergesort')
print(sorted_df4)
